!(function (e, n) {
    "object" == typeof exports && "undefined" != typeof module
        ? (module.exports = n())
        : "function" == typeof define && define.amd
        ? define(n)
        : ((e = e || self).uni = n())
})(this, function () {
    "use strict"
    try {
        var e = {}
        Object.defineProperty(e, "passive", {
            get: function () {
                !0
            },
        }),
            window.addEventListener("test-passive", null, e)
    } catch (e) {}
    var n = Object.prototype.hasOwnProperty
    function t(e, t) {
        return n.call(e, t)
    }
    var i = [],
        a = function (e, n) {
            var t = { options: { timestamp: +new Date() }, name: e, arg: n }
            if (window.__dcloud_weex_postMessage || window.__dcloud_weex_) {
                if ("postMessage" === e) {
                    var a = { data: [n] }
                    return window.__dcloud_weex_postMessage
                        ? window.__dcloud_weex_postMessage(a)
                        : window.__dcloud_weex_.postMessage(JSON.stringify(a))
                }
                var o = { type: "WEB_INVOKE_APPSERVICE", args: { data: t, webviewIds: i } }
                window.__dcloud_weex_postMessage
                    ? window.__dcloud_weex_postMessageToService(o)
                    : window.__dcloud_weex_.postMessageToService(JSON.stringify(o))
            }
            if (!window.plus)
                return window.parent.postMessage({ type: "WEB_INVOKE_APPSERVICE", data: t, pageId: "" }, "*")
            if (0 === i.length) {
                var r = plus.webview.currentWebview()
                if (!r) throw new Error("plus.webview.currentWebview() is undefined")
                var d = r.parent(),
                    s = ""
                ;(s = d ? d.id : r.id), i.push(s)
            }
            if (plus.webview.getWebviewById("__uniapp__service"))
                plus.webview.postMessageToUniNView(
                    { type: "WEB_INVOKE_APPSERVICE", args: { data: t, webviewIds: i } },
                    "__uniapp__service",
                )
            else {
                var w = JSON.stringify(t)
                plus.webview
                    .getLaunchWebview()
                    .evalJS(
                        'UniPlusBridge.subscribeHandler("'
                            .concat("WEB_INVOKE_APPSERVICE", '",')
                            .concat(w, ",")
                            .concat(JSON.stringify(i), ");"),
                    )
            }
        },
        o = {
            navigateTo: function () {
                var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
                    n = e.url
                a("navigateTo", { url: encodeURI(n) })
            },
            navigateBack: function () {
                var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
                    n = e.delta
                a("navigateBack", { delta: parseInt(n) || 1 })
            },
            switchTab: function () {
                var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
                    n = e.url
                a("switchTab", { url: encodeURI(n) })
            },
            reLaunch: function () {
                var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
                    n = e.url
                a("reLaunch", { url: encodeURI(n) })
            },
            redirectTo: function () {
                var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
                    n = e.url
                a("redirectTo", { url: encodeURI(n) })
            },
            getEnv: function (e) {
                window.plus ? e({ plus: !0 }) : e({ h5: !0 })
            },
            postMessage: function () {
                var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}
                a("postMessage", e.data || {})
            },
        },
        r = /uni-app/i.test(navigator.userAgent),
        d = /Html5Plus/i.test(navigator.userAgent),
        s = /complete|loaded|interactive/
    var w = window.my && navigator.userAgent.indexOf("AlipayClient") > -1
    var u = window.swan && window.swan.webView && /swan/i.test(navigator.userAgent)
    var c =
        window.qq &&
        window.qq.miniProgram &&
        /QQ/i.test(navigator.userAgent) &&
        /miniProgram/i.test(navigator.userAgent)
    var g = window.tt && window.tt.miniProgram && /toutiaomicroapp/i.test(navigator.userAgent)
    var v =
        window.wx &&
        window.wx.miniProgram &&
        /micromessenger/i.test(navigator.userAgent) &&
        /miniProgram/i.test(navigator.userAgent)
    var p = window.qa && /quickapp/i.test(navigator.userAgent)
    for (
        var l,
            _ = function () {
                ;(window.UniAppJSBridge = !0),
                    document.dispatchEvent(new CustomEvent("UniAppJSBridgeReady", { bubbles: !0, cancelable: !0 }))
            },
            f = [
                function (e) {
                    if (r || d)
                        return (
                            window.__dcloud_weex_postMessage || window.__dcloud_weex_
                                ? document.addEventListener("DOMContentLoaded", e)
                                : window.plus && s.test(document.readyState)
                                ? setTimeout(e, 0)
                                : document.addEventListener("plusready", e),
                            o
                        )
                },
                function (e) {
                    if (v)
                        return (
                            window.WeixinJSBridge && window.WeixinJSBridge.invoke
                                ? setTimeout(e, 0)
                                : document.addEventListener("WeixinJSBridgeReady", e),
                            window.wx.miniProgram
                        )
                },
                function (e) {
                    if (c)
                        return (
                            window.QQJSBridge && window.QQJSBridge.invoke
                                ? setTimeout(e, 0)
                                : document.addEventListener("QQJSBridgeReady", e),
                            window.qq.miniProgram
                        )
                },
                function (e) {
                    if (w) {
                        document.addEventListener("DOMContentLoaded", e)
                        var n = window.my
                        return {
                            navigateTo: n.navigateTo,
                            navigateBack: n.navigateBack,
                            switchTab: n.switchTab,
                            reLaunch: n.reLaunch,
                            redirectTo: n.redirectTo,
                            postMessage: n.postMessage,
                            getEnv: n.getEnv,
                        }
                    }
                },
                function (e) {
                    if (u) return document.addEventListener("DOMContentLoaded", e), window.swan.webView
                },
                function (e) {
                    if (g) return document.addEventListener("DOMContentLoaded", e), window.tt.miniProgram
                },
                function (e) {
                    if (p) {
                        window.QaJSBridge && window.QaJSBridge.invoke
                            ? setTimeout(e, 0)
                            : document.addEventListener("QaJSBridgeReady", e)
                        var n = window.qa
                        return {
                            navigateTo: n.navigateTo,
                            navigateBack: n.navigateBack,
                            switchTab: n.switchTab,
                            reLaunch: n.reLaunch,
                            redirectTo: n.redirectTo,
                            postMessage: n.postMessage,
                            getEnv: n.getEnv,
                        }
                    }
                },
                function (e) {
                    return document.addEventListener("DOMContentLoaded", e), o
                },
            ],
            m = 0;
        m < f.length && !(l = f[m](_));
        m++
    );
    l || (l = {})
    var E = "undefined" != typeof uni ? uni : {}
    if (!E.navigateTo) for (var b in l) t(l, b) && (E[b] = l[b])
    return (E.webView = l), E
})
